iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
自我挑戰組

PHP框架-Laravel自學挑戰系列 第 2

DAY2-Laravel框架的特色與純PHP差異比較

  • 分享至 

  • xImage
  •  

哈囉大家好!
挑戰的第二天就是要來了解Laravel這個框架的特色以及比較使用Laravel與撰寫純PHP的差異。
下面的資訊是透過閱讀官方文檔與CHAT GPT的幫忙之下彙整而成的資料,若有錯誤或是想要補充的地方也歡迎邦友們在下方留言喔!那我們就開始吧~

Laravel是由Taylor Otwell所創建的自由開源PHP框架,想要實現「用MVC架構撰寫WEB軟體」這個目標。說到「MVC架構」這個專有名詞,身為工程師小菜雞的我當然要來幫我自己科普一下了!

「MVC」是英語單字(Model-View-Controller)的字首組合,MVC架構是軟體工程中的一種設計模式,主要是將應用程式分成三個部分:

  1. Model:
    有關數據、商業邏輯的部份會被劃分在這一塊,應用程式的數據、邏輯和規則都是被分類在Model。簡單來說,Model負責讀取數據、驗證數據資料,或對資料庫進行增刪查改的操作。
  2. View:
    View處理的是呈現給使用者的畫面,呈現的數據會由Model提供,數據的資料格式可能是HTML網頁, JSON或XML格式⋯⋯等。除此之外,View也負責處理使用者和應用程式互動後的畫面呈現。
  3. Controller:
    Controller就像是Model和View中間的橋樑,負責處理接收使用者的input,將數據傳送給Model,讓Model更新資料庫後,將更新的數據結果回傳給View讓改變的數據顯示在畫面上。

下方是簡易的MVC架構運作過程:

  1. 使用者使用應用程式(thru UI),操作介面。(在編輯區編輯鐵人文章)
  2. Controller負責處理使用者的互動過程。
    (例如:使用者輸入文字按下"發布"按鈕上傳鐵人發文,Controller將使用者input數據傳給Model,告訴Model要更新資料庫的內容,並且決定如何回應Model回傳的數據)
  3. Model接收到Controller更新資料庫的訊息,進行數據內容更新。(把上傳的鐵人發文存到資料庫)
  4. 更新完成後Controller決定如何向使用者呈現更新後的數據內容。(發文的人看到文章發佈後的頁面)

哇~認識了MVC架構,但到底和寫一般的PHP有什麼不一樣啊?

「Laravel框架可以讓開發者更有組織架構地撰寫程式碼,讓程式碼變得更容易維護以及建造易擴充的應用程式。」
BY Laravel官方文檔

以下為官方列舉的Laravel框架特色:

  • 優雅的語法:簡單易學且易讀性高(有待後面驗證XD)
  • Eloquent ORM:允許開發者可以用物件導向的方式操作資料庫
  • Blade模板引擎:允許開發者將HTML段落拆分與引用,透過語法完成邏輯判斷與迴圈渲染
  • Artisan命令列介面:指令來幫助開發,甚至可以自行撰寫指令來使用!
  • 內建的認證機制
  • Routing系統
  • Middleware(中介層):
    進入route前,設定驗證權限或是其他任務,成功過驗證才允許進入route --> 開發者不用在每個route都做驗證處理,Laravel可以一個打十個~
  • 測試系統:方便開發者進行單元測試

既然對Laravel框架有些基本的了解,是時候讓Laravel和plain PHP進行battle了!
(下方battle結果來自CHAT GPT轉述江湖傳說)

1. 組織與架構上的差異:
Plain PHP就像是沒有被金箍咒束縛的孫悟空,可以自由自在大鬧天庭。沒有遵循MVC的架構下,開發者隨著應用程式規模的擴大,很可能造成程式碼維護上的困難以及PHP檔案的不一致。
但Laravel就不同了!在頭戴名為MVC的金箍咒下,必須遵循這個架構生長,也不會偏離航線。即使專案變得越來越大,也不會失去控制,日後修改或維護程式碼上也變得容易許多。

2. 開發速度與效率:
處理認證、驗證或是管理session時,用plain PHP撰寫的話必須要在每個檔案裡重複相似的程式碼,很容易花太多時間以及製造錯誤的程式碼。
Laravel就像是天生帶有咒力的咒術師,有內建的工具可以處理重複性的任務,像是認證、驗證以及處理routing,可以讓開發者去打更高級的怪物。(處理其他任務,讓開發更有效率)

3. 資安:
在Plain PHP中,資安的部分必須由開發者從0開始,例如撰寫防止SQL注入的語法,防止XSS攻擊⋯⋯等。
Laravel框架在資安部分也是有內建的Eloquent ORM來防止SQL注入攻擊,讓開發者在處理資安的部分變得更容易。

4. 資料庫管理:
目前工作上撰寫的是plain PHP,所以對於第四點特別有感觸。通常要對資料庫做CRUD處理時,必須撰寫純SQL語法以及PDO或MySQLi library來連接遠端資料庫。在撰寫較複雜的SQL query時就會很容易出錯(當然有部分也是我的問題啦哈哈哈~)
Laravel框架的Eloquent ORM讓開發者用更簡潔的語法來和資料庫互動,讓管理資料庫以及修改語法上變得更簡單並且降低寫錯語法的機率。


以上就是對於Laravel框架與比較的簡單介紹!還好有在12:00前完成發文!!
雖然才第二天但已經可感受到堅持30天的不容易呢~
希望明天自己也能如期完成發文任務/images/emoticon/emoticon13.gif


上一篇
DAY1-PHP 框架 Laravel 自學之旅開始!
下一篇
DAY3-初次啟動Laravel專案!Laravel程式碼架構大揭秘(上)
系列文
PHP框架-Laravel自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
yc1996
iT邦新手 4 級 ‧ 2024-09-07 07:03:10

Spaghetti code /images/emoticon/emoticon03.gif

阿寶 iT邦新手 5 級 ‧ 2024-09-14 15:24:16 檢舉

拒絕spaghetti code/images/emoticon/emoticon09.gif但好愛吃spaghetti

我要留言

立即登入留言